滥用on error resume next造成的空间被停用
时间 :
2022-03-06
编辑 :admin
下一次错误恢复时,此语句用于屏蔽错误信息,并使程序在出错时继续执行。然而,在使用中,似乎很多人没有考虑下一份简历的错误范围。例如
& lt%On错误继续下一个
设置连接=服务器。CreateObject("ADODB。连接”)Conn . Open " Provider = Microsoft。Jet . OLEDB.4.0数据源= " & amp服务器。MapPath(" db . MDB ")If Err。号码<。& gt0然后响应。写入“数据库连接错误”:response . end设置RS = conn.execute(“从表中选择*”)Do While Not RS . eof[div]
response . write RS(0)RS . movenextloop % & gt;
设置连接=服务器。CreateObject("ADODB。连接”)Conn . Open " Provider = Microsoft。Jet . OLEDB.4.0数据源= " & amp服务器。MapPath(" db . MDB ")If Err。号码<。& gt0然后响应。写入“数据库连接错误”:response . endedsubconnectset RS = conn . execute(“从表中选择*”)Do While RS . eofresponse . write RS(0)RS . movenext loop % & gt;与上面的代码类似,如果在建立数据连接时出现错误,那么程序会按照我们的预期停止执行并给出错误消息,但是如果set RS = conn . execute(" select * from table ")中出现错误怎么办?这时,上一份错误简历下一份还在工作。这时会出现一个占用100% CPU的无限循环。因此,如果服务器设置得很好,你自己的网站最多也就无法访问了。如果服务器设置得不够严格,整个服务器站点都会遭殃,结果空厂商会叫停你的空房间。
更改代码
& lt%Dim连接错误继续下一个[div]
这样,on error resume next只在连接的过程中起作用,以后的程序错误不会因为on error resume next而导致无休止的循环。
此外,错误恢复后,下一步将屏蔽错误信息。写程序的时候,特别是对于初学者来说,很有可能会因为这个语句的使用而忽略掉程序中隐藏的一些小错误。因此,您必须谨慎使用。